出于对资源的利用,我需要从 Debian 上面移除一块长期使用率只有 1% 的磁盘,在此之前我需要先测试一下主磁盘的 SMART 数据顺手再备份一下主磁盘的数据
#检查磁盘状况
先安装 smartmontools 工具
sudo apt install smartmontools
使用 lsblk
查看磁盘和分区,通常名称为 /dev/sda
、/dev/sdb
、/dev/nvme0n1
在这里我的是 /dev/nvme0n1
因此使用
sudo smartctl -a /dev/nvme0n1
来查看 smart 信息。
smart 信息通过 AI 分析更好,故此处不再解释,不过可以重点关注下面的几个字段
-
SMART overall-health self-assessment test result
,这个值应该必需为PASSED
否则需要处理了 -
Critical Warning
,反映 SSD 是否处于紧急状况,值应该为0x00
-
Percentage Used
,反映 SSD 是剩余寿命百分比,如果到达 100% 说明寿命到了 -
Data Units Written
和Data Units Read
,结合Percentage Used
评估耐久性 -
Available Spare
,可用空间百分比 -
Media and Data Integrity Errors
,表示因闪存损坏或数据错误导致的不可恢复错误,值应该为 0
#停止对磁盘使用
查看正在使用该磁盘目录的进程,我将磁盘挂载 /mnt
目录上的,因此命令是
sudo lsof /mnt
我的这里有一些 docker 容器在使用,因此需要搭配 sudo docker ps
和 sudo docker stop xxx
停止它们
注意记录有哪些进程在使用,后面需要更新路径引用
#迁移数据
此步骤需确保磁盘空间足够,使用 df -h
查看
由于我只有一个目录 /mnt/data
因此在根目录(主磁盘)新建一个 data
目录用于存放数据。
使用 rsync 复制数据
sudo rsync -av --progress /mnt/data/* /data
-
-a
: 保留权限、时间戳 -
-v
: 显示详细输出 -
--progress
: 显示复制进度
再使用 diff
校验完整性
sudo diff -r /mnt/data /data
无输出表示一致,无问题后可以删除原始数据
#卸载磁盘
卸载挂载点
sudo umount /mnt
正常应该没有任何输出,如果提示“device is busy”,再次谁在使用
lsof /mnt
验证是否正确卸载
df -h
mount | grep /mnt
禁用自动挂载
检查 /etc/fstab
文件是否有 /mnt
存在则编辑文件注释或删除
cat /etc/fstab
同步并刷新缓存、重载守护服务
sync
sudo systemctl daemon-reload
#更新目录使用
由于这一块盘本身利用率就低,加上我之前使用了软链接将 /mnt/data
链接到了 /data
目录,因此这里不需要更新,不过保险起见还是检查一下
先进行 docker ps -a
列出所有容器,在依次排查 docker inspect {container_id} | grep /mnt
在搭配前面记录使用的进程,检查可能存在的路径引用
#关闭电源
在确保无误后便可以关机卸下磁盘了
sudo shutdown -h now
#UnRaid 拆卸磁盘
本来这一块应该一同记录,因为就是将拆下的磁盘就是装到 UnRaid 上,但忘记记录了,只能补充写一下思路方便下一次使用。
UnRaid 的磁盘目录由“阵列 (array)”和“缓存 (cache)”两个部分组成,在 /mnt
目录表示如下
/mnt/
├─ cache/
├─ disk1/
├─ disk2/
├─ user/
├─ user0/
其中 disk1
、disk2
代表的阵列的磁盘,而 cache
目录便是缓存的磁盘,所有的数据均在这些目录中。
而 user
目录是整合了缓存盘和阵列盘上所有的共享文件夹,user0
同 user
类似,但排除了缓存盘。
我并没有开启奇偶校验,因此后续充满风险,如果开启了奇偶校验应该可以直接进行数据重建,就是速度比较慢。
后续流程基于 UnRaid 7.0.0 进行操作
#1. 检查要卸载磁盘有那些目录使用和迁移数据
在 UnRaid WebUI 中来到主界面 (Main) 点击磁盘名称左侧的图标浏览目录。记录下存在的目录,比如 appdata
、system
然后来到共享界面 (Shares) 通过点击目录名称处进入设置查看对应的共享目录的设置。
如图如果只有一个磁盘(为缓存),则可以更改其“主存储空间”为缓存盘或其他用来临时存放的和“辅助存储”为当前磁盘,然后利用 Mover 迁移(Cache -> 阵列),也可如下面一样手动移动。
如果该目录存在有多个磁盘(阵列)则需要在“已排除的磁盘”处将当前磁盘排除,然后回到主界面 (Main) 处进入当前磁盘的目录移动数据到其他阵列。未经测试,注意备份数据
注意不要将任意数据复制到 /mnt/user
或 /mnt/user0
下,可能会导致死循环
#2. 卸载磁盘和重新配置
确保关机前,该磁盘目录下没有任何文件夹和文件。
关机后直接取下该磁盘即可,开机后需要调整磁盘阵列,可以在 工具 (Tools) 处点击新配置 (NewConfig) 创建新的磁盘阵列
接下来就是调整共享目录的设置,之前移动数据前可能调整了共享目录的配置,可能需要重新配置。